package com.mm.cloud.lease.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 租客账单
 * </p>
 *
 * @author mr
 * @since 2025-09-22
 */
@Data
@TableName("mm_tenant_income")
public class TenantIncome implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 公司id
     */
    private Long companyId;

    /**
     * 房源id
     */
    private Long housingId;

    /**
     * 房间id
     */
    private Long roomId;

    /**
     * 租客id
     */
    private Long tenantId;

    /**
     * 续约id
     */
    private Long renewId;

    /**
     * 账单次序，新签=0
     */
    private Integer logIndex;

    /**
     * 有效期开始时间
     */
    private LocalDateTime startValidDate;

    /**
     * 有效期结束时间
     */
    private LocalDateTime endValidDate;

    /**
     * 时间间隔-年
     */
    private Integer validYear;

    /**
     * 时间间隔-月
     */
    private Integer validMonth;

    /**
     * 时间间隔-天
     */
    private Integer validDay;

    /**
     * 缴费顺序
     */
    private Integer payCount;

    /**
     * 缴费时间
     */
    private LocalDateTime payDate;

    /**
     * 缴费金额
     */
    private BigDecimal payMoney;

    /**
     * 欠费金额
     */
    private BigDecimal debtMoney;

    /**
     * 缴费状态 1-未收 2-收部分 3-已收完 4-坏账
     */
    private Byte payStatus;

    /**
     * 已生成流水金额
     */
    private BigDecimal financeMoney;

    /**
     * 未生成流水金额
     */
    private BigDecimal unfinanceMoney;

    /**
     * 滞纳金
     */
    private BigDecimal lateFeeMoney;

    /**
     * 减免滞纳金
     */
    private BigDecimal breakLateFeeMoney;

    /**
     * 减免滞纳金备注
     */
    private String breakLateFeeRemark;

    /**
     * 账单备注
     */
    private String incomeRemark;

    /**
     * 是否坏账 1-否 2-是
     */
    private Byte isBadDebt;

    /**
     * 坏账备注
     */
    private String badDebtRemark;

    /**
     * 是否催收 1-否 2-是
     */
    private Byte isSendSms;

    /**
     * 创建人id
     */
    private Long createrId;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 修改人id
     */
    private Long updaterId;

    /**
     * 修改时间
     */
    private LocalDateTime updateTime;

    /**
     * 删除标记 0-未删除 1-删除
     */
    private Byte isDelete;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }

    public Long getHousingId() {
        return housingId;
    }

    public void setHousingId(Long housingId) {
        this.housingId = housingId;
    }

    public Long getRoomId() {
        return roomId;
    }

    public void setRoomId(Long roomId) {
        this.roomId = roomId;
    }

    public Long getTenantId() {
        return tenantId;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    public Long getRenewId() {
        return renewId;
    }

    public void setRenewId(Long renewId) {
        this.renewId = renewId;
    }

    public Integer getLogIndex() {
        return logIndex;
    }

    public void setLogIndex(Integer logIndex) {
        this.logIndex = logIndex;
    }

    public LocalDateTime getStartValidDate() {
        return startValidDate;
    }

    public void setStartValidDate(LocalDateTime startValidDate) {
        this.startValidDate = startValidDate;
    }

    public LocalDateTime getEndValidDate() {
        return endValidDate;
    }

    public void setEndValidDate(LocalDateTime endValidDate) {
        this.endValidDate = endValidDate;
    }

    public Integer getValidYear() {
        return validYear;
    }

    public void setValidYear(Integer validYear) {
        this.validYear = validYear;
    }

    public Integer getValidMonth() {
        return validMonth;
    }

    public void setValidMonth(Integer validMonth) {
        this.validMonth = validMonth;
    }

    public Integer getValidDay() {
        return validDay;
    }

    public void setValidDay(Integer validDay) {
        this.validDay = validDay;
    }

    public Integer getPayCount() {
        return payCount;
    }

    public void setPayCount(Integer payCount) {
        this.payCount = payCount;
    }

    public LocalDateTime getPayDate() {
        return payDate;
    }

    public void setPayDate(LocalDateTime payDate) {
        this.payDate = payDate;
    }

    public BigDecimal getPayMoney() {
        return payMoney;
    }

    public void setPayMoney(BigDecimal payMoney) {
        this.payMoney = payMoney;
    }

    public BigDecimal getDebtMoney() {
        return debtMoney;
    }

    public void setDebtMoney(BigDecimal debtMoney) {
        this.debtMoney = debtMoney;
    }

    public Byte getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(Byte payStatus) {
        this.payStatus = payStatus;
    }

    public BigDecimal getFinanceMoney() {
        return financeMoney;
    }

    public void setFinanceMoney(BigDecimal financeMoney) {
        this.financeMoney = financeMoney;
    }

    public BigDecimal getUnfinanceMoney() {
        return unfinanceMoney;
    }

    public void setUnfinanceMoney(BigDecimal unfinanceMoney) {
        this.unfinanceMoney = unfinanceMoney;
    }

    public BigDecimal getLateFeeMoney() {
        return lateFeeMoney;
    }

    public void setLateFeeMoney(BigDecimal lateFeeMoney) {
        this.lateFeeMoney = lateFeeMoney;
    }

    public BigDecimal getBreakLateFeeMoney() {
        return breakLateFeeMoney;
    }

    public void setBreakLateFeeMoney(BigDecimal breakLateFeeMoney) {
        this.breakLateFeeMoney = breakLateFeeMoney;
    }

    public String getBreakLateFeeRemark() {
        return breakLateFeeRemark;
    }

    public void setBreakLateFeeRemark(String breakLateFeeRemark) {
        this.breakLateFeeRemark = breakLateFeeRemark;
    }

    public String getIncomeRemark() {
        return incomeRemark;
    }

    public void setIncomeRemark(String incomeRemark) {
        this.incomeRemark = incomeRemark;
    }

    public Byte getIsBadDebt() {
        return isBadDebt;
    }

    public void setIsBadDebt(Byte isBadDebt) {
        this.isBadDebt = isBadDebt;
    }

    public String getBadDebtRemark() {
        return badDebtRemark;
    }

    public void setBadDebtRemark(String badDebtRemark) {
        this.badDebtRemark = badDebtRemark;
    }

    public Byte getIsSendSms() {
        return isSendSms;
    }

    public void setIsSendSms(Byte isSendSms) {
        this.isSendSms = isSendSms;
    }

    public Long getCreaterId() {
        return createrId;
    }

    public void setCreaterId(Long createrId) {
        this.createrId = createrId;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public Long getUpdaterId() {
        return updaterId;
    }

    public void setUpdaterId(Long updaterId) {
        this.updaterId = updaterId;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    public Byte getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(Byte isDelete) {
        this.isDelete = isDelete;
    }

    @Override
    public String toString() {
        return "TenantIncome{" +
            "id = " + id +
            ", companyId = " + companyId +
            ", housingId = " + housingId +
            ", roomId = " + roomId +
            ", tenantId = " + tenantId +
            ", renewId = " + renewId +
            ", logIndex = " + logIndex +
            ", startValidDate = " + startValidDate +
            ", endValidDate = " + endValidDate +
            ", validYear = " + validYear +
            ", validMonth = " + validMonth +
            ", validDay = " + validDay +
            ", payCount = " + payCount +
            ", payDate = " + payDate +
            ", payMoney = " + payMoney +
            ", debtMoney = " + debtMoney +
            ", payStatus = " + payStatus +
            ", financeMoney = " + financeMoney +
            ", unfinanceMoney = " + unfinanceMoney +
            ", lateFeeMoney = " + lateFeeMoney +
            ", breakLateFeeMoney = " + breakLateFeeMoney +
            ", breakLateFeeRemark = " + breakLateFeeRemark +
            ", incomeRemark = " + incomeRemark +
            ", isBadDebt = " + isBadDebt +
            ", badDebtRemark = " + badDebtRemark +
            ", isSendSms = " + isSendSms +
            ", createrId = " + createrId +
            ", createTime = " + createTime +
            ", updaterId = " + updaterId +
            ", updateTime = " + updateTime +
            ", isDelete = " + isDelete +
            "}";
    }
}
